﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ImageK.Gui
{
    /**
    * PlugIns or PlugInFilters that want to listen to changes in a GenericDialog
    * without adding listeners for each dialog field should implementthis method.
    * The dialogItemChanged method of a PlugIn or PlugInFilter can and should read
    * the various dialog items by the appropriate GenericDialog methods like
    * getNextNumber (items that are not read in the dialogItemChanged method will
    * not be recorded by the Macro recorder).
    *
    * The PlugIn or PlugInFilter has to be added to the GenericDialog by
    * its addDialogListener method:
    * gd.addDialogListener(this);
    *
*/
    public interface DialogListener
    {

        /**
         * This method is invoked by a Generic Dialog if any of the inputs have changed
         *  (CANCEL does not trigger it; OK and running the dialog from a macro only
         *   trigger the first DialogListener added to a GenericDialog).
         *
         * @param e   The event that has been generated by the user action in the dialog.
         *            Note that <code>e</code> is <code>null</code> if the
         *            dialogItemChanged method is called after the user has pressed the
         *            OK button or if the GenericDialog has read its parameters from a
         *            macro.
         * @param gd  A reference to the GenericDialog.
         * @return    Should be true if the dialog input is valid. False disables the
         *              OK button and preview (if any).
         */
        bool dialogItemChanged(GenericDialog gd, EventArgs e);
    }
}
